/*
 *===========
 *|	标签切换	|
 *===========
 * */

/*
 * 内置用法
$("#J_Tab").tab();

* 自定义
$("#J_Tab").tab({
	"titleOverHover" : function(index, tabTitle, tabTitleUniti, tabConten, tabContenUniti){
		// 添加类名
		tabTitleUniti.eq(index).addClass("z-active");
		tabTitleUniti.not(":eq("+index+")").removeClass("z-active");
		// 显示隐藏操作
		tabConten.show();
		tabContenUniti.hide();
		tabContenUniti.eq(index).show();
	}
	,"titleOutHover" : function(index, tabTitle, tabTitleUniti, tabConten, tabContenUniti){
		// 添加类名
		tabTitleUniti.eq(index).removeClass("z-active");
	}
});
*/
;(function($){
	$.fn.tab = function(settings){
		var config = {
			// 选择器
			"tabTitle" : "ul:eq(0)" // 标签标题
			,"tabTitleUniti" : "li" // 标签标题容器内的单元
			,"tabConten" : "ul:eq(1)" // 标签内容容器
			,"tabContenUniti" : "li" // 标签内容容器内的单元
			
			// 事件
			,"tabOverHover" : null // 顶级容器hover
			,"tabOutHover" : null
			,"titleOverHover" : null // 标签标题容器hover
			,"titleOutHover" : null
			,"contentOverHover" : null // 标签内容容器hover
			,"contentOutHover" : null
		};
		
		config = $.extend(config, settings);
		
		var self = $(this)
			,tabTitle = $(self.find(config.tabTitle))
			,tabTitleUniti = tabTitle.find(config.tabTitleUniti)
			,tabConten = $(self.find(config.tabConten))
			,tabContenUniti = tabConten.find(config.tabContenUniti);
			
		
		// 给标签标题添加hover事件
		function titleHover(){
			var index = null;
			tabTitleUniti.hover(function(){
				index = parseInt($(this).data("index"));
				if(!isNaN(index)){ // 是数字
					if( $.isFunction(config.titleOverHover) ){
						// 自定义操作
						config.titleOverHover.call(this,index, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
					}else{
						// 显示隐藏操作
						tabConten.show();
						tabContenUniti.hide();
						tabContenUniti.eq(index).show();
					}
				}
			}
			,function(){
				if(!isNaN(index)){ // 是数字
					if( $.isFunction(config.titleOutHover) ){
						// 自定义操作
						config.titleOutHover.call(this,index, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
					}
				}
			});
		};
		
		// 给标签内容添加hover事件
		function contentHover(){
			var index = null;
			tabContenUniti.hover(function(){
				index = parseInt($(this).data("index"));
				if(!isNaN(index)){ // 是数字
					if( $.isFunction(config.contentOverHover) ){
						// 自定义操作
						config.contentOverHover.call(this,index, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
					}
				}
			}
			,function(){
				if(!isNaN(index)){ // 是数字
					if( $.isFunction(config.contentOutHover) ){
						// 自定义操作
						config.contentOutHover.call(this,index, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
					}
				}
			});
		};
		
		// 给最大容添加hover事件
		function tabHover(){
			self.hover(function(){
				if( $.isFunction(config.tabOverHover) ){
					// 自定义操作
					config.tabOverHover.call(this, self, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
				}
			}
			,function(){
				if( $.isFunction(config.tabOutHover) ){
					// 自定义操作
					config.tabOutHover.call(this, self, tabTitle, tabTitleUniti, tabConten, tabContenUniti);
				}
			});
		}
		
		tabTitleUniti && titleHover(); // 执行标签标题的悬浮事件绑定
		tabConten && (config.contentOverHover || config.contentOutHover) && contentHover(); // 执行标签内容的悬浮事件绑定
		self && (config.tabOverHover || config.tabOutHover) && tabHover();
		return this;
	}
	
})(jQuery);